Python project template - pylint
Table of Content
Python project template - pylint#
Linting is the automated source code checking for programmatic and stylistic errors.
A lint tool is a basic static code analyzer
pylint is default VSCode linter and it enable by default
install#
install
pip install pylint
VSCode#
Setings#
vscode settings
"python.linting.pylintEnabled": true
Extensions#
pylint extension for Visual Studio Code
- Execute pylint automatically on python file
- bundle with pylint can changed by settings
pylint.path
Control#
control pylint with rules file .pylintrc
pylintrc file location
/etc/pylintrc~/pylintrc<project_path>/pylintrc
create pylintrc
pylint --generate-rcfile > pylintrc
VSCode
VSCode look automaticly for pylintrc at the project root
pylintrc
pre-commit git hook not found the pylintrc file if we prefix it with dot (.pylintrc)
VSCode file mapping
map pylintrc file to ini type
"files.associations": {
"pylintrc": "ini"
},
Demo#

minimal pylintrc file to disabled checker message
[MASTER]
disable=
C0114, # (missing-module-docstring)
C0115, # (missing-class-docstring)
Demo II#
Add rules inline
- Add comment to end of line
# pylint: disable=[problem-code]
# pylint: disable=unused-private-member

Run manual#
~/.local/bin/pylint <file full path>
~/.local/bin/pylint --rcfile=<config_file> <file full path>
demo
~/.local/bin/pylint --rcfile pylintrc pylint_demo.py
************* Module pylint_demo
pylint_demo.py:2:4: R0201: Method could be a function (no-self-use)
pylint_demo.py:1:0: R0903: Too few public methods (1/2) (too-few-public-methods)
git hook#
- Install pre-commit python util
- Add
.pre-commit-config.yaml - Run pre-commit install
- Add files to
stage - Run
pre-commit runor try commit stage files
install
pip install pre-commit
.pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: pylint
name: pylint
entry: pylint
language: system
types: [python]
args:
[
"--rcfile=pylintrc"
]
Demo#
~/.local/bin/pre-commit run
[WARNING] Unstaged files detected.
[INFO] Stashing unstaged files to /home/user/.cache/pre-commit/patch1681097484-36170.
pylint...................................................................Failed
- hook id: pylint
- exit code: 8
************* Module pylint_demo
linters/pylint_demo.py:1:0: R0903: Too few public methods (1/2) (too-few-public-methods)
-------------------------------------------------------------------
Your code has been rated at 6.67/10 (previous run: 10.00/10, -3.33)
[INFO] Restored changes from /home/user/.cache/pre-commit/patch1681097484-36170.
pylintrc template#
[MASTER]
disable=
C0114, # (missing-module-docstring)
C0115, # (missing-class-docstring)
C0116, # (missing-function-docstring)
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=120
[BASIC]
# Good variable names which should always be accepted, separated by a comma
good-names=x,y
Tips#
line disable#
import config.logging_settings # pylint: disable=unused-import
function scope disable#
def test():
# Disable all the no-member violations in this function
# pylint: disable=no-member
...
# pylint: enable=no-member
Tips#
E1101:Module 'pygame' has no 'init' member
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=extensionname" // comma separated
]
// or
"python.linting.pylintArgs": [
"--unsafe-load-any-extension=y"
]